#include <stdio.h>
#include <stdlib.h>

#define MAX_POINT 1000
// const int MAX_POINT = 10;
// //输入点数
int num_point;
int power_aim;
//拟合方程的幂次数

double x_array[MAX_POINT];
double y_array[MAX_POINT];
// 输入坐标点的横纵坐标值

double weight_per_point[MAX_POINT];
// 坐标点的权重

int order;
double   G_matrix[5][5];
double   d_matrix[5];
//分别对应两个矩阵，用于求解系数
double * polyfit(double * x_input , double * y_input , double * w_input , double power_input , double num_point_input);
/*
    主函数，包括5个参数，参数说明：
    x_input: 指输入点的横坐标；
    y_input: 指输入点的纵坐标；
    w_input: 指每一个输入点的权值；
    power_input: 指需要拟合方程的次幂；
    num_point_input: 指输入点的个数；

*/

void inital_data(double * x_input , double * y_input , double * w_input , double power_input , double num_point_input);

double * my_algorithm();

void mydebug();


double calculate_in_G( int index_r , int index_c);

double calculate_in_d( int index_x );

int get_max_item_c(int col_num , int s_row_num);

void swap_matrix_line(int line_2_swap1 , int line_2_swap2);

double my_round(double num);

void calculate_row_x(int row , int col);

double * resolve_matrix();

void calculate_matrix();

double * my_algorithm();

